﻿Option Strict On
Option Infer On
Option Explicit On

Imports System
Imports System.Collections.Generic
Imports GenDotNet.Model.Common

Namespace StoredProcModel

   Public Interface IRecordsetData
      Inherits IBaseData

      ' Scalars
      ReadOnly Property Name() As String
      ReadOnly Property MainTable() As ITableData
      ReadOnly Property InsertPriority() As Int32
      ReadOnly Property ChildFlag() As Int32
      ' TODO: Reconsider Where clauses
      'ReadOnly Property WhereClause() As String
      ReadOnly Property IsDistinct() As Boolean

      ' Related
      ReadOnly Property Columns() As IEnumerable(Of IColumnData)
      ReadOnly Property Joins() As IEnumerable(Of IJoinData)
      ReadOnly Property OrderBies() As IEnumerable(Of IOrderByData)
      ReadOnly Property InsertColumns() As IEnumerable(Of IColumnData)
      ReadOnly Property UpdateColumns() As IEnumerable(Of IColumnData)

      ' Calculated
      Function GetColumn(ByVal columnName As String) As IColumnData
      ReadOnly Property PrimaryKeyColumns() As IEnumerable(Of IColumnData)

   End Interface

End Namespace
